package Year22_Month05.day18;

import java.util.Stack;

public class 有效的括号 {
    public boolean isValid(String s) {
        //定义一个栈用来判断括号是否匹配
        Stack<Character> stack = new Stack<>();
        char[] arr = s.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            //如果是左括号统一入栈
            if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {
                stack.push(arr[i]);
                continue;
            } else {
                //如果不是左括号，判断是否栈空，如果空就直接报错，因为匹配不上了
                if(stack.empty()){
                    return false;
                }
                char tmp = stack.peek();
                //不空的话就进行是否匹配的判断，不匹配也报错，因为又匹配不上了
                if ((arr[i] == ']' && tmp == '[') ||
                        (arr[i] == ')' && tmp == '(') ||
                        (arr[i] == '}' && tmp == '{')) {
                    stack.pop();
                }else {
                    return false;
                }
            }
        }
        //最后如果是栈空，那么才证明匹配
        return stack.empty();
    }
}
